package com.bid.base.common.util;

import java.math.BigDecimal;
import java.math.RoundingMode;


/**
 * <strong>Description : </strong> <br>
 * <p>
 * <strong>北京正源德标科技信息有限责任公司</strong> <br>
 * </p>
 * <br>
 *
 * @author : zhaots
 * @date Date : 2020年12月07日 18:22
 * 修改人 修改日期 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public class AmtUtil {

    public static int defaultScal = 2;

    public static RoundingMode defaultMode = RoundingMode.HALF_UP;

    public static BigDecimal fen2yuan(String amt) {
        return div(amt, "100", defaultScal, defaultMode);
    }

    public static BigDecimal fen2yuan(BigDecimal amt) {
        return div(amt + "", "100", defaultScal, defaultMode);
    }

    public static BigDecimal yuan2fen(BigDecimal amt) {
        return mul(amt + "", "100", defaultScal, defaultMode);
    }

    private static BigDecimal mul(String s, String s100, int defaultScal2, RoundingMode defaultMode2) {
        // 有点仓促
        return new BigDecimal(s).multiply(new BigDecimal(s100)).setScale(defaultScal2, defaultMode2);
    }

    public static BigDecimal fen2yuan(Integer amt) {
        return div(amt + "", "100", defaultScal, defaultMode);
    }

    public static BigDecimal fen2yuan(Integer amt, int scal) {
        return div(amt + "", "100", scal, defaultMode);
    }

    public static BigDecimal div(String num1, String num2) {

        return new BigDecimal(num1).divide(new BigDecimal(num2), defaultScal, defaultMode);
    }

    public static BigDecimal div(BigDecimal num1, BigDecimal num2) {

        return num1.divide(num2, defaultScal, defaultMode);
    }
    public static BigDecimal div(BigDecimal num1, BigDecimal num2,int  scale) {

        return num1.divide(num2, defaultMode);
    }

    public static BigDecimal div(String num1, String num2, int scale, RoundingMode mode) {
        if (Stringer.isNullOrEmpty(num1) || Stringer.isNullOrEmpty(num2)) {
            return new BigDecimal(0);
        }
        return new BigDecimal(num1).divide(new BigDecimal(num2), scale, mode);
    }


    public static void main(String[] args) {
//        BigDecimal g = new BigDecimal("0.1");
//
//        BigDecimal fen2yuan = div(new BigDecimal("19386"),new BigDecimal("1024"),0);
        BigDecimal price = new BigDecimal("5.1");
//        BigDecimal setScale = price.setScale(2, BigDecimal.ROUND_HALF_UP);
//
//        System.err.println(setScale);


        String format = String.format("%.2f", price);
        System.err.println("123:  " + format);
    }

}
